// 给定一个5位数的数组nums代表扑克牌中的5张牌，其中2-10为数字本身，
// A用1表示，J用11表示，Q用12表示，K用13表示，大小王用0表示，且大小王可以替换任意数字
// 要求：判断给定的5张牌是否是一个顺子，即是否为连续的5个数

// 思路：先不考虑大小王，如果5个数是连续的，则这5个数中最大值最小值的关系为：最大值 - 最小值 = 4
// 如果牌中有大小王可以替换这5个数中的任意数字，则除了大小王之外剩下的最大值和最小值关系为： 最大值 - 最小值 <= 4，而且剩余数不能有重复数字

function isStraight(nums) {
    let min = Infinity
    let max = -Infinity
    let set = new Set
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] === 0) {
            continue
        }        
        if (set.has(nums[i])) {
            return false
        }
        set.add(nums[i])
        min = Math.min(min, nums[i])
        max = Math.max(max, nums[i])
    }
    return max - min <= 4
}

let arr = [0,0,1,2,5]
console.log(isStraight(arr))